package com.hsp.Demo_03_object;

public class Demo_04 {
    public static void main(String[] args) {
        /*
        需求：
            编写一个copyPerson方法，可以复制一个Person对象，返回复制的对象。 即克隆对象
            注意：要求得到新对象和原来的对象是两个独立的对象，只是他们的属性相同。

            请注意： 要求时独立，
                 public Person copyPerson(Person p){
                    Person p2 = new Person();
                    如果直接这么写：p2 = p 是怎样的？？
                    猜测：由于引用类型之间的拷贝，是地址拷贝，所以 p2指向的堆空间就变成了p的空间。
                    就不再独立了，改变p2就会改变p，改变p就会改变p2.
                 }
    }
         */
        CC cc = new CC();
        Person person = new Person();
        person.name = "小王";
        person.age = 18;
        Person person1 = cc.copyPerson(person);
        System.out.println("person 的名字：" + person.name + ", 年龄为：" + person.age);
        System.out.println("person1 的名字：" + person1.name + ", 年龄为：" + person1.age);
        //修改person1的name和age
        System.out.println("========修改后的值==========");
        person1.name = "小红";
        person1.age = 25;
        System.out.println("person 的名字：" + person.name + ", 年龄为：" + person.age);
        System.out.println("person1 的名字：" + person1.name + ", 年龄为：" + person1.age);
    }
}

class Person{
    String name;
    int age;
}

class CC{

    public Person copyPerson(Person p){
        Person p2 = new Person();
        p2 = p;
        /*p2.name = p.name;
        p2.age = p.age;*/
        return p2;
    }
}